﻿using System;
using System.ComponentModel;

namespace ControleRepresentante.Logic.Models
{
    public class RelatorioVisita : AttributeHolder
    {
        private string m_ClienteNome;
        private string m_VendedorNome;

        public RelatorioVisita()
        {
            Data = DateTime.Today;
        }

        public virtual DateTime Data { get; set; }
        public virtual string Observacao { get; set; }
        public virtual Cliente Cliente { get; set; }
        public virtual Vendedor Vendedor { get; set; }
        public virtual RelatorioVisitaJolitex RelatorioVisitaJolitex { get; protected set; }

        public virtual void SetRelatorioVisitaJolitex()
        {
            RelatorioVisitaJolitex = new RelatorioVisitaJolitex(this);
        }

        public virtual string ClienteNome
        {
            get { return m_ClienteNome ?? (m_ClienteNome = Cliente.RazaoSocial); }
            set { m_ClienteNome = value; }
        }
        public virtual string VendedorNome
        {
            get { return m_VendedorNome ?? (m_VendedorNome = Vendedor.Nome); }
            set { m_VendedorNome = value; }
        }
    }

    public class RelatorioVisitaJolitex : ModelBase
    {
        internal RelatorioVisitaJolitex(RelatorioVisita relatorioVisita)
        {
            RelatorioVisita = relatorioVisita;
        }

        protected RelatorioVisitaJolitex()
        {
        }

        public virtual RelatorioVisitaJolitexOcorrencia Ocorrencia { get; set; }
        protected virtual internal RelatorioVisita RelatorioVisita { get; protected set; }
        public virtual int? Codigo { get; set; }
        public virtual bool Sincronizado { get; set; }

        public override Guid Id
        {
            get { return RelatorioVisita.Id; }
            set { }
        }
    }

    public enum RelatorioVisitaJolitexOcorrencia
    {
        [Description("Comprador Ausente")]
        CompradorAusente = 1,
        Estocado = 2,
        [Description("Colocou Pedido")]
        ColocouPedido = 3,
        [Description("Aguardando Pedido")]
        AguardandoPedido = 4,
        [Description("Marcou Retorno")]
        MarcouRetorno = 5,
        [Description("Deve Juros-Atrasos")]
        DeveJurosAtrasos = 6,
        [Description("Invasão de Área")]
        InvasaoDeArea = 7,
        Telefone = 8,
        Outros = 9,
        Filial = 10,
        Fechou = 11,
        [Description("Cadastrou Cliente")]
        CadastrouCliente = 12

    }
}
